package com.example.service;

import com.example.common.Result;
import com.example.common.PageResult;
import com.example.dto.StoreProductDTO;
import com.example.dto.StoreProductUpdateDTO;
import com.example.vo.StoreProductVO;

/**
 * 店长商品Service接口
 */
public interface StoreProductService {
    
    /**
     * 店长上架商品
     */
    Result<Void> addStoreProduct(StoreProductDTO storeProductDTO);
    
    /**
     * 删除店长商品
     */
    Result<Void> deleteStoreProduct(Long id);
    
    /**
     * 更新店长商品
     */
    Result<Void> updateStoreProduct(Long id, StoreProductDTO storeProductDTO);
    
    /**
     * 根据ID查询店长商品
     */
    Result<StoreProductVO> getStoreProductById(Long id);
    
    /**
     * 分页查询当前店长的商品
     */
    Result<PageResult<StoreProductVO>> getStoreProductPage(int page, int size, String keyword, Integer status);
    
    /**
     * 查询店长所有上架商品（用于用户购买）
     */
    Result<PageResult<StoreProductVO>> getOnlineProducts(Long storeManagerId, int page, int size, String keyword);
    
    /**
     * 上架/下架商品
     */
    Result<Void> updateProductStatus(Long id, Integer status);
    
    /**
     * 商品入库
     */
    Result<Void> stockIn(Long id, Integer quantity);

    /**
     * 根据供货商品ID查询店长商品库存
     */
    Result<Integer> getStockBySupplyProductId(Long supplyProductId);

    /**
     * 更新店长商品信息
     */
    Result<Void> updateStoreProduct(Long id, StoreProductUpdateDTO updateDTO);
    
    /**
     * 获取店长已进货但未上架的商品列表
     */
    Result<PageResult<StoreProductVO>> getAvailableProductsForShelf(int page, int size, String keyword);
    
    /**
     * 获取公开商品详情（用于用户查看和购买）
     */
    Result<StoreProductVO> getPublicProductDetail(Long id);
} 